AndroidでMediaRecorderの解像度を上げる方法
MediaRecorderを使って動画撮影するAndroidアプリを作ったのですが デフォルトだと画質が悪いので高画質にする方法を調べました。 以下がサンプルになります。このビューをsetContentViewして下さい。
package sample.record; import java.io.File; import android.content.Context; import android.media.CamcorderProfile; import android.media.MediaRecorder; import android.os.Environment; import android.view.SurfaceHolder; import android.view.SurfaceView; public class SurfaceViewEx extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder surfaceHolder; private MediaRecorder mediaRecorder; public SurfaceViewEx(Context context) { super(context); surfaceHolder = getHolder(); surfaceHolder.addCallback(this); surfaceHolder.setType( SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {} @Override public void surfaceDestroyed(SurfaceHolder holder) { try { mediaRecorder.stop(); mediaRecorder.release(); } catch (Exception e) {} } @Override public void surfaceCreated(SurfaceHolder holder) { try{ mediaRecorder=new MediaRecorder(); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); mediaRecorder.setProfile(profile); File folder = Environment.getExternalStorageDirectory(); File file = File.createTempFile("sample20110603",".mp4", folder); mediaRecorder.setOutputFile(file.getAbsolutePath()); mediaRecorder.setPreviewDisplay(holder.getSurface()); mediaRecorder.prepare(); mediaRecorder.start(); } catch(Exception e) {} } }
必要なパーミッションは android.permission.RECORD_AUDIO android.permission.WRITE_EXTERNAL_STORAGE android.permission.CAMERA になります。